package com.adtech.adms.commons.tree;

import java.io.Serializable;
import java.util.List;

import org.apache.struts2.json.annotations.JSON;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;


/**
 * 
 * 
 * @author 门宏建 
 * @since 2011-8-11 
 * 
 * @Copyright (C) AD Tech Workshop All Right Reserved
 */
@JsonAutoDetect
@JsonIgnoreProperties(value={"innerObject,parent"})
public interface TreeNode<T> extends Serializable {
	public Serializable getId();

	public Boolean getChecked();
	
	//半选状态
	public Boolean getHalfChecked();

	public Boolean getIsParent();

	public String getName();

	public Boolean getOpen();

	public String getTarget();

	public List<TreeNode<T>> getNodes();

	public void setNodes(List<TreeNode<T>> nodes);

	public String getUrl();
	
	@JsonIgnore public T getInnerObject();

	public boolean isLeaf();
	@JsonIgnore public TreeNode<T> getParent();
}
